package map;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;

/**
 * java.util.Map 查找表  是JAVA集合框架(Java Collections Framework)的一员
 * Map本身是一个接口，这种结构体现出来是一个多行两列的表格，其中左列称为key，右列称为value
 * Map总是根据key获取对应的value。
 *
 * 常用实现类:java.util.HashMap 散列表，哈希表
 * HashMap是使用散列算法实现的Map，当今查询速度最快的数据结构。
 */
public class MapDemo {
    public static void main(String[] args) {
        Map<String,Integer> map=new HashMap<>();

        map.entrySet();
        map.values();
           /*
            V put(K k,V v)
            将一组键值对存入Map中。
            Map有一个特点:Key不允许重复！！！(key的equals决定是否为重复的key)
            如果使用重复的key来put元素，则是替换value操作。此时方法返回值为被替换的value
            否则为null.
         */
        //如果Map的value是一个包装类类型，获取时不要用基本类型接收避免因为自动拆箱导致空指针
       Integer value= map.put("英语",19);
        System.out.println(value);
        map.put("数学",87);
        map.put("语文",75);
        map.put("理综",76);
        map.put("体育",15);

        map.forEach((k,v)-> System.out.println(k+","+v));
     Set<String> set=map.keySet();
     for (String s:set){
      System.out.println(s);
     }


        System.out.println(map);
        value=map.put("数学",98);
        System.out.println(map);
        System.out.println(value);

        int size= map.size();
        System.out.println("size:"+size);

        value=map.get("数学");
        System.out.println("数学:"+value);
        value=map.get("实验");
        System.out.println("实验:"+value);

        value=map.remove("英语");
        System.out.println(map);
        System.out.println(value);

        boolean  ck=map.containsKey("英语");
        boolean cv=map.containsValue(75);
        System.out.println("包含Key:"+ck);
        System.out.println("包含Value:"+cv);

        map.clear();
        System.out.println(map);



    }
}

